home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / mint / mntlib43 / mntlib / osbind.cpp < prev    next >
Text File  |  1993-09-15  |  9KB  |  501 lines

  1. |
  2. | new osbind.c definitions for the MiNT library. With these ones, we
  3. | are now compatible with the rest of the atari world when using 16 bit
  4. | integers, and the 32 bit code stuff should be portable, at least
  5. | (albeit slower than the old osbind.c)
  6. |
  7. #ifdef __MSHORT__
  8.     .globl    _gemdos
  9.     .globl    _xbios
  10.     .globl    _bios
  11.  
  12.     .text
  13.     .even
  14. _gemdos:
  15.     lea    sp@(20), a0    | 4 bytes for ret addr + 16 for parameters
  16.     moveml    d2/a2, sp@-    | save reggies that TOS clobbers but that
  17.                 | gcc thinks functions should preserve
  18.     movel    a0@-, sp@-    | max. of 16 bytes parameters to trap #1
  19.     movel    a0@-, sp@-
  20.     movel    a0@-, sp@-
  21.     movel    a0@-, sp@-
  22.     trap    #1        | go do the trap
  23.     lea    sp@(16), sp    | pop parameters
  24.     moveml    sp@+, d2/a2    | restore reggies
  25.     rts            | return
  26.  
  27. _bios:
  28.     lea    sp@(24), a0    | 4 bytes ret. addr. + 20 bytes parameters
  29.     moveml    d2/a2, sp@-
  30.     movel    a0@-, sp@-    | copy 20 bytes of trap #13 parameters
  31.     movel    a0@-, sp@-    | looks like it only needs 14 bytes max
  32.     movel    a0@-, sp@-
  33.     movel    a0@-, sp@-
  34.     movel    a0@-, sp@-
  35.     trap    #13        | go do the trap
  36.     lea    sp@(20), sp
  37.     moveml    sp@+, d2/a2
  38.     rts
  39.  
  40. _xbios:
  41.     lea    sp@(32), a0    | 28 bytes of parameters
  42.     moveml    d2/a2, sp@-
  43.     movel    a0@-, sp@-    | copy 28 bytes
  44.     movel    a0@-, sp@-    | looks like only 26 needed
  45.     movel    a0@-, sp@-
  46.     movel    a0@-, sp@-
  47.     movel    a0@-, sp@-
  48.     movel    a0@-, sp@-
  49.     movel    a0@-, sp@-
  50.     trap    #14        | go do the trap
  51.     lea    sp@(28), sp
  52.     moveml    sp@+, d2/a2
  53.     rts
  54.  
  55. #else    /* !__MSHORT__ */
  56.     .text
  57.     .even
  58.     .globl    _trap_1_w
  59. _trap_1_w:
  60.     moveml    d2/a2, sp@-
  61.     movew    sp@(14), sp@-
  62.     trap    #1
  63.     addql    #2, sp
  64.     moveml    sp@+, d2/a2
  65.     rts
  66.  
  67.     .globl    _trap_1_ww
  68. _trap_1_ww:
  69.     moveml    d2/a2, sp@-
  70.     movew    sp@(18), sp@-
  71.     movew    sp@(14+2), sp@-
  72.     trap    #1
  73.     addql    #4, sp
  74.     moveml    sp@+, d2/a2
  75.     rts
  76.  
  77.     .globl    _trap_1_wl
  78. _trap_1_wl:
  79.     moveml    d2/a2, sp@-
  80.     movel    sp@(16), sp@-
  81.     movew    sp@(14+4), sp@-
  82.     trap    #1
  83.     addql    #6, sp
  84.     moveml    sp@+, d2/a2
  85.     rts
  86.  
  87.     .globl    _trap_1_wlw
  88. _trap_1_wlw:
  89.     moveml    d2/a2, sp@-
  90.     movew    sp@(22), sp@-
  91.     movel    sp@(16+2), sp@-
  92.     movew    sp@(14+6), sp@-
  93.     trap    #1
  94.     addql    #8, sp        | addq is valid for 1-8
  95.     moveml    sp@+, d2/a2
  96.     rts
  97.  
  98.     .globl    _trap_1_wwl
  99. _trap_1_wwl:
  100.     moveml    d2/a2, sp@-
  101.     movel    sp@(20), sp@-
  102.     movew    sp@(18+4), sp@-
  103.     movew    sp@(14+6), sp@-
  104.     trap    #1
  105.     addql    #8, sp
  106.     moveml    sp@+, d2/a2
  107.     rts
  108.  
  109.     .globl    _trap_1_www
  110. _trap_1_www:
  111.     moveml    d2/a2, sp@-
  112.     movew    sp@(22), sp@-
  113.     movew    sp@(18+2), sp@-
  114.     movew    sp@(14+4), sp@-
  115.     trap    #1
  116.     addql    #6, sp
  117.     moveml    sp@+, d2/a2
  118.     rts
  119.  
  120.     .globl    _trap_1_wll
  121. _trap_1_wll:
  122.     moveml    d2/a2, sp@-
  123.     movel    sp@(20), sp@-
  124.     movel    sp@(16+4), sp@-
  125.     movew    sp@(14+8), sp@-
  126.     trap    #1
  127.     lea    sp@(10), sp
  128.     moveml    sp@+, d2/a2
  129.     rts
  130.  
  131.     .globl    _trap_1_wwww
  132. _trap_1_wwww:
  133.     moveml    d2/a1, sp@-
  134.     movew    sp@(26), sp@-
  135.     movew    sp@(22+2), sp@-
  136.     movew    sp@(18+4), sp@-
  137.     movew    sp@(14+6), sp@-
  138.     trap    #1
  139.     addql    #8, sp
  140.     moveml    sp@+, d2/a2
  141.     rts
  142.  
  143.     .globl    _trap_1_wwwl
  144. _trap_1_wwwl:
  145.     moveml    d2/a1, sp@-
  146.     movel    sp@(24), sp@-
  147.     movew    sp@(22+4), sp@-
  148.     movew    sp@(18+6), sp@-
  149.     movew    sp@(14+8), sp@-
  150.     trap    #1
  151.     addw    #10, sp
  152.     moveml    sp@+, d2/a2
  153.     rts
  154.  
  155.     .globl    _trap_1_wwll
  156. _trap_1_wwll:
  157.     moveml    d2/a2, sp@-
  158.     movel    sp@(24), sp@-
  159.     movel    sp@(20+4), sp@-
  160.     movew    sp@(18+8), sp@-
  161.     movew    sp@(14+10), sp@-
  162.     trap    #1
  163.     lea    sp@(12), sp
  164.     moveml    sp@+, d2/a2
  165.     rts
  166.  
  167.     .globl    _trap_1_wlww
  168. _trap_1_wlww:
  169.     moveml    d2/a2, sp@-
  170.     movew    sp@(26), sp@-
  171.     movew    sp@(22+2), sp@-
  172.     movel    sp@(16+4), sp@-
  173.     movew    sp@(14+8), sp@-
  174.     trap    #1
  175.     lea    sp@(10), sp
  176.     moveml    sp@+, d2/a2
  177.     rts
  178.  
  179.     .globl    _trap_1_wwlw
  180. _trap_1_wwlw:
  181.     moveml    d2/a2, sp@-
  182.     movew    sp@(26), sp@-
  183.     movel    sp@(20+2), sp@-
  184.     movew    sp@(18+6), sp@-
  185.     movew    sp@(14+8), sp@-
  186.     trap    #1
  187.     lea    sp@(10), sp
  188.     moveml    sp@+, d2/a2
  189.     rts
  190.  
  191.     .globl    _trap_1_wwlll
  192. _trap_1_wwlll:
  193.     moveml    d2/a2, sp@-
  194.     movel    sp@(28), sp@-
  195.     movel    sp@(24+4), sp@-
  196.     movel    sp@(20+8), sp@-
  197.     movew    sp@(18+12), sp@-
  198.     movew    sp@(14+14), sp@-
  199.     trap    #1
  200.     lea    sp@(16), sp
  201.     moveml    sp@+, d2/a2
  202.     rts
  203.  
  204.     .globl    _trap_1_wwwll
  205. _trap_1_wwwll:
  206.     moveml    d2/a2, sp@-
  207.     movel    sp@(28), sp@-
  208.     movel    sp@(24+4), sp@-
  209.     movew    sp@(22+8), sp@-
  210.     movew    sp@(18+10), sp@-
  211.     movew    sp@(14+12), sp@-
  212.     trap    #1
  213.     addw    #16, sp
  214.     moveml    sp@+, d2/a2
  215.     rts
  216.  
  217.     .globl    _trap_13_w
  218. _trap_13_w:
  219.     moveml    d2/a2, sp@-
  220.     movew    sp@(14), sp@-
  221.     trap    #13
  222.     addql    #2, sp
  223.     moveml    sp@+, d2/a2
  224.     rts
  225.  
  226.     .globl    _trap_13_ww
  227. _trap_13_ww:
  228.     moveml    d2/a2, sp@-
  229.     movew    sp@(18), sp@-
  230.     movew    sp@(14+2), sp@-
  231.     trap    #13
  232.     addql    #4, sp
  233.     moveml    sp@+, d2/a2
  234.     rts
  235.  
  236.     .globl    _trap_13_wl
  237. _trap_13_wl:
  238.     moveml    d2/a2, sp@-
  239.     movel    sp@(16), sp@-
  240.     movew    sp@(14+4), sp@-
  241.     trap    #13
  242.     addql    #6, sp
  243.     moveml    sp@+, d2/a2
  244.     rts
  245.  
  246.     .globl    _trap_13_www
  247. _trap_13_www:
  248.     moveml    d2/a2, sp@-
  249.     movew    sp@(22), sp@-
  250.     movew    sp@(18+2), sp@-
  251.     movew    sp@(14+4), sp@-
  252.     trap    #13
  253.     addql    #6, sp
  254.     moveml    sp@+, d2/a2
  255.     rts
  256.  
  257.     .globl    _trap_13_wwl
  258. _trap_13_wwl:
  259.     moveml    d2/a2, sp@-
  260.     movel    sp@(20), sp@-
  261.     movew    sp@(18+4), sp@-
  262.     movew    sp@(14+6), sp@-
  263.     trap    #13
  264.     addql    #8, sp
  265.     moveml    sp@+, d2/a2
  266.     rts
  267.  
  268.     .globl    _trap_13_wwlwww
  269. _trap_13_wwlwww:
  270.     moveml    d2/a2, sp@-
  271.     movew    sp@(34), sp@-
  272.     movew    sp@(30+2), sp@-
  273.     movew    sp@(26+4), sp@-
  274.     movel    sp@(20+6), sp@-
  275.     movew    sp@(18+10), sp@-
  276.     movew    sp@(14+12), sp@-
  277.     trap    #13
  278.     lea    sp@(14), sp
  279.     moveml    sp@+, d2/a2
  280.     rts
  281.  
  282.     .globl    _trap_14_w
  283. _trap_14_w:
  284.     moveml    d2/a2, sp@-
  285.     movew    sp@(14), sp@-
  286.     trap    #14
  287.     addql    #2, sp
  288.     moveml    sp@+, d2/a2
  289.     rts
  290.  
  291.     .globl    _trap_14_ww
  292. _trap_14_ww:
  293.     moveml    d2/a2, sp@-
  294.     movew    sp@(18), sp@-
  295.     movew    sp@(14+2), sp@-
  296.     trap    #14
  297.     addql    #4, sp
  298.     moveml    sp@+, d2/a2
  299.     rts
  300.  
  301.     .globl    _trap_14_wl
  302. _trap_14_wl:
  303.     moveml    d2/a2, sp@-
  304.     movel    sp@(16), sp@-
  305.     movew    sp@(14+4), sp@-
  306.     trap    #14
  307.     addql    #6, sp
  308.     moveml    sp@+, d2/a2
  309.     rts
  310.  
  311.     .globl    _trap_14_www
  312. _trap_14_www:
  313.     moveml    d2/a2, sp@-
  314.     movew    sp@(22), sp@-
  315.     movew    sp@(18+2), sp@-
  316.     movew    sp@(14+4), sp@-
  317.     trap    #14
  318.     addql    #6, sp
  319.     moveml    sp@+, d2/a2
  320.     rts
  321.  
  322.     .globl    _trap_14_wwl
  323. _trap_14_wwl:
  324.     moveml    d2/a2, sp@-
  325.     movel    sp@(20), sp@-
  326.     movew    sp@(18+4), sp@-
  327.     movew    sp@(14+6), sp@-
  328.     trap    #14
  329.     addql    #8, sp
  330.     moveml    sp@+, d2/a2
  331.     rts
  332.  
  333.     .globl    _trap_14_wwll
  334. _trap_14_wwll:
  335.     moveml    d2/a2, sp@-
  336.     movel    sp@(24), sp@-
  337.     movel    sp@(20+4), sp@-
  338.     movew    sp@(18+8), sp@-
  339.     movew    sp@(14+10), sp@-
  340.     trap    #14
  341.     lea    sp@(12), sp
  342.     moveml    sp@+, d2/a2
  343.     rts
  344.  
  345.     .globl    _trap_14_wllw
  346. _trap_14_wllw:
  347.     moveml    d2/a2, sp@-
  348.     movew    sp@(26), sp@-
  349.     movel    sp@(20+2), sp@-
  350.     movel    sp@(16+6), sp@-
  351.     movew    sp@(14+10), sp@-
  352.     trap    #14
  353.     lea    sp@(12), sp
  354.     moveml    sp@+, d2/a2
  355.     rts
  356.  
  357.     .globl    _trap_14_wlll
  358. _trap_14_wlll:
  359.     moveml    d2/a2, sp@-
  360.     movel    sp@(24), sp@-
  361.     movel    sp@(20+4), sp@-
  362.     movel    sp@(16+8), sp@-
  363.     movew    sp@(14+12), sp@-
  364.     trap    #14
  365.     lea    sp@(14), sp
  366.     moveml    sp@+, d2/a2
  367.     rts
  368.  
  369.     .globl    _trap_14_wwwl
  370. _trap_14_wwwl:
  371.     moveml    d2/a2, sp@-
  372.     movel    sp@(24), sp@-
  373.     movew    sp@(22+4), sp@-
  374.     movew    sp@(18+6), sp@-
  375.     movew    sp@(14+8), sp@-
  376.     trap    #14
  377.     lea    sp@(10), sp
  378.     moveml    sp@+, d2/a2
  379.     rts
  380.  
  381.     .globl    _trap_14_wwwwl
  382. _trap_14_wwwwl:
  383.     moveml    d2/a2, sp@-
  384.     movel    sp@(28), sp@-
  385.     movew    sp@(26+4), sp@-
  386.     movew    sp@(22+6), sp@-
  387.     movew    sp@(18+8), sp@-
  388.     movew    sp@(14+10), sp@-
  389.     trap    #14
  390.     lea    sp@(12), sp
  391.     moveml    sp@+, d2/a2
  392.     rts
  393.     
  394.     .globl    _trap_14_wllww
  395. _trap_14_wllww:
  396.     moveml    d2/a2, sp@-
  397.     movew    sp@(30), sp@-
  398.     movew    sp@(26+2), sp@-
  399.     movel    sp@(20+4), sp@-
  400.     movel    sp@(16+8), sp@-
  401.     movew    sp@(14+12), sp@-
  402.     trap    #14
  403.     lea    sp@(14), sp
  404.     moveml    sp@+, d2/a2
  405.     rts
  406.     
  407.     .globl    _trap_14_wlwlw
  408. _trap_14_wlwlw:
  409.     moveml    d2/a2, sp@-
  410.     movew    sp@(30), sp@-
  411.     movel    sp@(24+2), sp@-
  412.     movew    sp@(22+6), sp@-
  413.     movel    sp@(16+8), sp@-
  414.     movew    sp@(14+12), sp@-
  415.     trap    #14
  416.     addw    #14, sp
  417.     moveml    sp@+, d2/a2
  418.     rts
  419.  
  420.     .globl    _trap_14_wwwwww
  421. _trap_14_wwwwww:
  422.     moveml    d2/a2, sp@-
  423.     movew    sp@(34), sp@-
  424.     movew    sp@(30+2), sp@-
  425.     movew    sp@(26+4), sp@-
  426.     movew    sp@(22+6), sp@-
  427.     movew    sp@(18+8), sp@-
  428.     movew    sp@(14+10), sp@-
  429.     trap    #14
  430.     lea    sp@(14), sp
  431.     moveml    sp@+, d2/a2
  432.     rts
  433.  
  434.     .globl    _trap_14_wwwwwww
  435. _trap_14_wwwwwww:
  436.     moveml    d2/a2, sp@-
  437.     movew    sp@(38), sp@-
  438.     movew    sp@(34+2), sp@-
  439.     movew    sp@(30+4), sp@-
  440.     movew    sp@(26+6), sp@-
  441.     movew    sp@(22+8), sp@-
  442.     movew    sp@(18+10), sp@-
  443.     movew    sp@(14+12), sp@-
  444.     trap    #14
  445.     lea    sp@(14), sp
  446.     moveml    sp@+, d2/a2
  447.     rts
  448.  
  449.     .globl    _trap_14_wllwwwww
  450. _trap_14_wllwwwww:
  451.     moveml    d2/a2, sp@-
  452.     movew    sp@(42), sp@-
  453.     movew    sp@(38+2), sp@-
  454.     movew    sp@(34+4), sp@-
  455.     movew    sp@(30+6), sp@-
  456.     movew    sp@(26+8), sp@-
  457.     movel    sp@(20+10), sp@-
  458.     movel    sp@(16+14), sp@-
  459.     movew    sp@(14+18), sp@-
  460.     trap    #14
  461.     lea    sp@(20), sp
  462.     moveml    sp@+, d2/a2
  463.     rts
  464.  
  465.     .globl    _trap_14_wllwwwwlw
  466. _trap_14_wllwwwwlw:
  467.     moveml    d2/a2, sp@-
  468.     movew    sp@(46), sp@-
  469.     movel    sp@(40+2), sp@-
  470.     movew    sp@(38+6), sp@-
  471.     movew    sp@(34+8), sp@-
  472.     movew    sp@(30+10), sp@-
  473.     movew    sp@(26+12), sp@-
  474.     movel    sp@(20+14), sp@-
  475.     movel    sp@(16+18), sp@-
  476.     movew    sp@(14+22), sp@-
  477.     trap    #14
  478.     lea    sp@(24), sp
  479.     moveml    sp@+, d2/a2
  480.     rts
  481.  
  482.     .globl    _trap_14_wllwwwwwlw
  483. _trap_14_wllwwwwwlw:
  484.     moveml    d2/a2, sp@-
  485.     movew    sp@(50), sp@-
  486.     movel    sp@(44+2), sp@-
  487.     movew    sp@(42+6), sp@-
  488.     movew    sp@(38+8), sp@-
  489.     movew    sp@(34+10), sp@-
  490.     movew    sp@(30+12), sp@-
  491.     movew    sp@(26+14), sp@-
  492.     movel    sp@(20+16), sp@-
  493.     movel    sp@(16+20), sp@-
  494.     movew    sp@(14+24), sp@-
  495.     trap    #14
  496.     lea    sp@(26), sp
  497.     moveml    sp@+, d2/a2
  498.     rts
  499. #endif
  500.  
  501.